package ig.finanzas;







import ig.finanzas.riesgo.FactorRiesgoPersonal;



import ig.util.excepciones.DatoInvalidoExcepcion;



import ig.util.excepciones.LogicaExcepcion;



import java.rmi.RemoteException;



import java.util.Date;
import javax.ejb.EJBException;







/**



 * Define los metodos que se pueden operar sobre los objetos tipo PosicionAccion registrados en el sistema.  Una PosicionAccion hace referencia a un contrato que puede ser atomizable  y que representa titulo de propiedad.



 * @author  lfgarcia



 */



public interface PosicionAccion extends Contrato {



        public String getTipo() throws RemoteException;

    

        public void setTipo(String tipo) throws RemoteException;

    



	public double getUnidades() throws RemoteException;



	



	public boolean getBursatil() throws RemoteException;



	



	/**



	 * @uml.property  name="accionPK"



	 * @uml.associationEnd  



	 */



	public AccionPK getAccionPK() throws RemoteException;



	



	/**



	 * Valora el contrato a una fecha especifica.



	 * @param fecha



	 * @return



	 * @throws DatoInvalidoExcepcion Si la fecha es nula.



	 * @throws LogicaExcepcion Si no hay suficiente informacion para determinar el valor vigente.



	 * @throws RemoteException



	 */



	public double valorar(Date fecha) 



	throws DatoInvalidoExcepcion, LogicaExcepcion, RemoteException;



	



	/**



	 * Calcula el cambio esperado de la serie de valores registrados del contrato.



	 * @param fecha



	 * @param definidor



	 * @return



	 * @throws DatoInvalidoExcepcion Si alguno de los parametros recibidos es invalido.



	 * @throws LogicaExcepcion Si la forma de calculo no permite obtener el valor, si no hay suficientes 



	 * valores en la serie, si la informacion hallada no alcanza a ser una muestra estadisticamente representativa,



	 * o si la serie no permite el calculo utilizando diferencias logaritmicas.



	 * @throws RemoteException



	 */



	public double cambioEsperadoValoresRegistrados(Date fecha, DefinidorCalculoCambioEsperado definidor,boolean isPrecio) 



	throws DatoInvalidoExcepcion, LogicaExcepcion, RemoteException;



	



	/**



	 * Calcula el valor en riesgo del contrato.



	 * @param fecha



	 * @param factor



	 * @return



	 * @throws DatoInvalidoExcepcion Si la fecha o factor especificado es nulo, o si el



	 * factor de riesgo definido no es de tipo precio. 



	 * @throws LogicaExcepcion Si la forma de calculo no permite obtener el valor, si no hay suficientes 



	 * valores en la serie, si la informacion hallada no alcanza a ser una muestra estadisticamente representativa,



	 * o si la serie no permite el calculo utilizando diferencias logaritmicas.



	 */



	public double valorEnRiesgo(Date fecha, FactorRiesgoPersonal factor,boolean isPrecio) 



	throws DatoInvalidoExcepcion, LogicaExcepcion, RemoteException;



		
        public void unsetEntityContext() throws EJBException, RemoteException;


}



